ufo_onlinefandomcom_ru-20200214-history
Справка:Функции парсера
Общий синтаксис функций парсера таков: Функции #expr: Функция expr производит математические вычисления над числами или переменными/параметрами, приводимыми к числам. Синтаксис: Поддерживаются следующие операторы (перечислены в порядке, примерно соответствующем их приоритету): Как всегда, лучше поставить лишние скобки, чем ломать голову с порядком вычисления На выводе логических переменных 0 означает ложь, а 1 — истину. Например: выдаёт: . Произведено преобразование 100° по Фаренгейту в градусы по Цельсию с округлением до ближайшего целого числа. #if: Функция if ( ) служит для создания конструкций вида if-then-else. Её синтаксис таков: Если условие — пустая строка или состоит только из пробелов, считается, что условие не выполнено, и возвращается текст, если условие ложно; если заданное условие истинно, то при его выполнении возвращается текст, если условие истинно. Последний параметр может быть опущен — в этом случае при ложном условии будет возвращена пустая строка. Обратите внимание, что if не поддерживает сравнение при помощи «=» и прочие математические операции. Так, возвратит «да», так как строка «1 = 2» не пуста. Для сравнения строк используйте ifeq. Для сравнения чисел используйте ifexpr. #ifeq: Функция ifeq сравнивает две строки, возвращая ещё одну строку в зависимости от результата сравнения. Её синтаксис таков: #ifexist: Функция ifexist похожа по синтаксису на if, только вместо условия проверяется существование статьи с указанным заголовком. Проверка выполняется с учётом регистра после приведения проверяемого заголовка к каноническому виду (если в начале стоит строчная буква, то она преобразуется в прописную). Например: : вернёт , поскольку страница User:Drbug существует. : вернёт , поскольку user:drbug при приведении к канонической форме даст User:Drbug. : вернёт , поскольку страница User:DrBUG не существует. не работает с относительными путями типа /подстраница. Для пространства имён «Файл:» (также «File:», «Изображение:») проверяется наличие только локального файла, но не файла на Викискладе. Для проверки наличия доступного файла также и на Викискладе, нужно использовать префикс «Mediа:» Пример (файл Example.png загружен только на Викисклад): : вернёт : вернёт : вернёт Если была создана локальная страница описания файла с Викисклада, все 3 варианта вернут «есть». #ifexpr: ifexpr вычисляет математическое выражение и возвращает одну из двух строк в зависимости от результата. Если результат вычислений равен нулю — возвращается второй текст, в противном случае — первый. Математический синтаксис такой же, как у expr. #switch: switch сравнивает одно значение со многими, возвращая результат, если найдено совпадение. #switch может использоваться вместо #ifeq: : даёт : даёт #time: #time — функция, форматирующая время и дату. Синтаксис: : или : Если время не задано, то используется текущее. Из-за кэширования возможно различие между реальным временем и отображаемым. Для ручного обновления сохраните страницу, не делая никаких изменений, или перейдите по адресу . Аргумент format подобен используемому в функции PHP date Расширение PHP cинтаксиса: Все другие символы будут выведены без изменений. * Фраза, заключёная в двойные кавычки, будет выведена без изменений и кавычек. Незакрытые кавычки будут считаться символами. ** → Сегодня вторник ** → 20’11" * Наклонная черта влево работает так же как и в PHP date(). \H выводит H, \" выводит ". Формат параметра time идентичен используемому в PHP strtotime(). Это могут быть абсолютные и относительные даты, например «11 декабря» и/или «+10 hours», что может использоваться для перевода временных зон. * → (14 дней назад) * → (UTC+4) * → #rel2abs: Функция #rel2abs преобразует относительный путь ссылки в абсолютный. Под относительным путём принимается такой, который начинается с символов '/', './' или '../', а также просто '..' или '.'. Пример: * Если находиться на стр. Help:Foo/bar и вызвать , результатом должно стать Help:Foo/baz * Если находиться на стр. Help:Foo и вызвать , результатом должно стать baz * Если находиться на стр. Help:Foo и вызвать , результатом должно стать Error: Invalid depth in path: "Help:Foo/../../baz" (tried to access a node above the root node)" Чтобы не проверять, существует ли искомый путь, можно использоват эту функцию в комбинации с #ifexist: : | '..' exist | '..' does not exist}} Если путь, передаваемый на вход функции в качестве параметра, не идентифицирован как относительный путь, функция его вернёт в качестве результата. Например: : возвращает 'Help:Help' #titleparts: Функция #titleparts возвращает подстроку до нужного слэша. Основной целью является возможность получения страниц всех уровней, для которых данная является подстраницей. В случае, когда параметр bits равен нулю, больше количества уровней статьи или его невозможно преобразовать в число, возвращается title Пример: * вернёт результат результат Статья * вернёт результат результат Статья/foo * вернёт результат результат foo * Если находиться на стр. Участник:Foo/bar и вызвать |1}}, результатом должно стать Участник:Foo. * Если находиться на стр. Участник:Foo/bar и вызвать |1}}, результатом должно стать Foo. #iferror: возвращает ошибку, если выражение содержит строку , которая генерируется функциями #expr, #ifexpr, #time, #rel2abs и в некоторых других ситуациях в MediaWiki (такими как глубокая рекурсия). Это самый удобный способ отлавливать неправильный ввод, который должен быть передан некоторым другим функциям парсера. Например: * |неверный ввод|правильное выражение}} даст |неверный ввод|правильное выражение}} * |неверный ввод|правильное выражение}} даст |неверный ввод|правильное выражение}} Последние два параметра необязательны. Если параметр удачно опущен, тогда в случае удачи будет возвращено выражение. Если параметр ошибка также опущен, тогда в случае ошибки не будет выведено ничего, а в случае удачного выполнения будет возвращено выражение. * |неверный ввод}} даст |неверный ввод}} * |неверный ввод}} даст |неверный ввод}} * }} даст }} * }} даст }} Таким образом: * значит «вывести викитекст, если он верный, иначе альтернативу». * значит «вывести викитекст, если он верный». : Примечание: эта функциональность замещает баг в старом препроцессоре, позволявший использовать #switch для отлова ошибок в выражениях. Категория:Справка